/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package muhnes.sizoo.controlador;

import java.io.Serializable;
import java.util.List;
import java.util.ArrayList;
import javax.faces.model.SelectItem;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import muhnes.sizoo.dal.ClaseDao;
import muhnes.sizoo.dal.ClaseDaoImpl;
import muhnes.sizoo.modelo.Clase;
import muhnes.sizoo.dal.PhylumDao;
import muhnes.sizoo.dal.PhylumDaoImpl;
import muhnes.sizoo.modelo.Phylum;
/**
 *
 * @author Ricardo Orellana
 */
@ManagedBean(name = "claseBean")
@ViewScoped
public class ClaseBean implements Serializable {
    
    private Clase clase;
    private List<Clase> listaClase;
    private List< SelectItem > listaPhylum;
    
    public ClaseBean() {
        ClaseDao dao = new ClaseDaoImpl();
        clase = new Clase();
        listaClase = dao.buscarTodos();
    }

    public Clase getClase() {
        return clase;
    }

    public void setClase(Clase clase) {
        this.clase = clase;
    }
    
    public List<Clase> getListaClase() {
        if( listaClase == null ) {
            ClaseDao dao = new ClaseDaoImpl();
            listaClase = dao.buscarTodos();
        }
        return listaClase;
    }

    public void setListaClase(List<Clase> listaClase) {
        this.listaClase = listaClase;
    }   
    
     public void prepararAdicion( ActionEvent event  ){
        clase = new Clase();
    }
    
    public void prepararModificacion( Clase clase ){
        this.clase = clase;
    }
    
    public void prepararEliminacion( Clase clase ){
        this.clase = clase;
    }
    
    public void agregarClase( ActionEvent event ){
        ClaseDaoImpl dao = new ClaseDaoImpl();
        clase.setHabilitado( Boolean.TRUE );
        dao.guardar( clase );
        recrearLista();
    }
    
     public void actualizarClase( ActionEvent event ){
        ClaseDaoImpl dao = new ClaseDaoImpl();
        dao.actualizar( clase );
        recrearLista();
    }
    
    public void eliminarClase( ActionEvent event ){
        ClaseDaoImpl dao = new ClaseDaoImpl();
        dao.eliminar( clase );
        recrearLista();
    }
    
    
    public List< SelectItem > getListaPhylum() {
        if( listaPhylum == null ) {
            listaPhylum = new ArrayList< SelectItem >();
            PhylumDao dao = new PhylumDaoImpl();
            for( Phylum phylum : dao.buscarTodos() ) {
                SelectItem item = new SelectItem( phylum, phylum.getNombre() );
                listaPhylum.add( item );
            }
        }
        return listaPhylum;
    }
    
    void recrearLista() {
        listaClase = null;
    }
    
}
